The present invention relates to data transfer.
Wireless data services now enable a new generation of high-performance, low-power-consumption mobile devices to access network-centric applications and content anywhere, anytime. Handheld devices include personal digital assistants (PDAs), email companions, and other data-centric mobile products such as Palm OS, Symbian, and Pocket PC products. The main functionality of such devices has been for personal information manager (PIM) applications. But as more of these devices get network connectivity options, applications such as voice and email are becoming important. Additionally, next-generation mobile phones are hybrid devices that extend the voice-centric nature of current generation (2 G) handsets. These devices are connected to packet-based networks, which deliver data-services in addition to voice-services. Handsets connected to 2.5 G networks such as GPRS and PHS allow always-on data network connection. This enables further proliferation of multimedia- and graphics-based applications in the consumer segment of this market. 3 G Handsets have been designed from the ground up to interface to high-speed, packet-based networks that deliver speeds from 20 Kbps to 2 Mbps. These handsets, in addition to the features of 2.5 G phones, have the capability to support 2-way video, share pictures and video clips, use location-based information, provide a rich web experience and support next-generation server-based applications for business like always-on email.
As mobile applications become richer and more complex, the ability to optimally process multimedia becomes a necessity on mobile devices such as PDAs and smart-phones. Applications such as video mail, mapping services, reading PDF files, and graphics-rich games all require high performance graphics and multimedia capabilities. These capabilities enable new applications that benefit from rich images and system performance in ways that were previously unavailable to most handheld users. These mobile devices face the challenge of providing a compelling user experience while reducing overall system energy consumption and cost.
To reduce cost, system-on-chip (SOC) solutions have appeared. The SOC solutions integrate various circuits such as a memory controller, a hard disk controller, a graphics/video controller, a communications controller, and other peripheral controllers such as serial and USB onto a single device. A clock signal is used to synchronize data transfers between circuits. The circuits also communicate over a central bus. Processing performance is influenced in part by the width of a data bus that transfers data between components within the SOC device and external devices such as memory. A data width is typified by, for example, 8 bits, 16 bits, 32 bits, 64-bits and 128 bits, which are a power of 2. If a large data bus width is adopted, data transfer capacity is increased for memory intensive applications. However, a large data bus width increases the number of wiring conductors for physically connecting the data bus among the SOC devices and the overall size of the system is inevitably increased. Additionally, many peripherals such as serial ports and USB ports do not need high data transfer rate and typically communicate over 8-bit or 16-bit buses.
Since each SOC device has a number of components that must communicate with each other, a system for packing and unpacking data from components or peripherals with varying bus widths is needed. Alignment is important for functional reasons because an unaligned data access may cause a bus error resulting in a system crash. Alignment is also important for performance reasons because unaligned data access, which can be handled with hardware or software alignment correction tools, will likely become more expensive as processor speeds continue to increase.
Data stored in memory or disk is typically heterogeneous, in the sense that it consists of elements with varying alignment requirements. The storage space allocated for the data, in the absence of alignment requirements, can be optimized by packing the elements one after another. Data packing and unpacking are frequently used procedures when there are transfers between devices with different data bus widths. However, imposing alignment requirements on the data elements may force the introduction of padding to fill holes in storage caused by the alignment requirements. This padding may increase the amount of storage required to store the data elements. The amount of storage required to store the data elements may depend on the order in which the data elements are arranged in storage. This is because the padding necessary to accommodate the data alignment requirements may be different depending on the order that the data elements are stored.